import Vue from 'vue'
import Vuex from 'vuex'
import user from '../modules/user';

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    count: 0,
    list:[1,2,3,4,5,6,7,8,9,10]
  },

  //getters可以获取state里的数据，但是不能修改
  //用于映射属性，将state里的数据映射成计算属性
  getters: {
    flitterList(state){
      return state.list.filter((item,index) => index % 2 === 0)
    }
  },
  mutations: {
    addNumber (state, num) {
      state.count += num
    },
    minusNumber (state, num) {
      state.count -= num
    },
    changeCount (state, num) {
      state.count = num
    }
  },

  //抓门用于异步操作数据
  actions: {
    //context 可以理解位上下文对象，包含commit方法，可以直接调用commit方法触发mutations里的方法
    //actions方法不能直接修改state里的数据，只能通过commit方法触发mutations里的方法
    changeCountAsync(context,param){
      setTimeout(() => {
        context.commit('addNumber', param)
      }, 1000)
    }
  },
  modules: {
    user
  }
})
